package com.ctshk.rpc.tour.req.schedule;

import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.util.ArrayList;
import java.util.List;

import javax.validation.constraints.NotNull;

import com.ctshk.common.model.PageReq;
import com.fasterxml.jackson.annotation.JsonIgnore;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;


/**
 * @author pf
 */
@EqualsAndHashCode(callSuper = true)
@Data
@ApiModel(value = "TripScheduleListQueryReq对象", description = "团期管理列表查询对象")
public class TripScheduleListQueryReq extends PageReq implements Serializable {
	
	@ApiModelProperty("团检索内容")
	private String tripContent;

    @ApiModelProperty(value = "行程标题")
    private String tripTitle ;

    @ApiModelProperty(value = "团号")
    private String tripNumber ;

    @ApiModelProperty(value = "出发日期开始")
    private LocalDate departureBeginDate;

    @ApiModelProperty(value = "出发日期结束")
    private LocalDate departureEndDate;

    @ApiModelProperty(value = "回程日期开始")
    private LocalDate backBeginDate;

    @ApiModelProperty(value = "回程日期开始")
    private LocalDate backEndDate;

    @ApiModelProperty(value = "行程码")
    private String tripCode;

    @ApiModelProperty(value = "目的地主数据ID")
    private Long destinationId;

    @ApiModelProperty(value = "目的地")
    private String destination;

    @ApiModelProperty(value = "出发地主数据ID")
    private Long departurePlaceId;

    @ApiModelProperty(value = "出发地")
    private String departurePlace;

    @ApiModelProperty(value = "状态")
    private Integer scheduleStatus ;

    @ApiModelProperty(value = "行程id")
    private Long tripId ;

    @ApiModelProperty(value = "负责人ID")
    private Long chargePersonId;
    
    @ApiModelProperty(value = "负责部门ID")
    private Long chargePersonDeptId;

    @ApiModelProperty(value = "OP的ID")
    private Long opId;

    @ApiModelProperty(value = "出发日期（周几）")
    private List<Integer> departureDayOfWeek ;

    @ApiModelProperty(value = "出行天数")
    private Integer travelDays;

    @ApiModelProperty(value = "旅行团性质主数据id")
    private Long groupNatureId;

    @ApiModelProperty(value = "旅行团种类主数据ID")
    private Long groupTypeId;

    @ApiModelProperty(value = "旅行团主题id")
    private Long tourThemeId;

    @ApiModelProperty(value = "旅游组别主数据ID")
    private Long tourTypeId;

    @ApiModelProperty(value = "查询类型组合（1：急收团 2：已成团 3：可收客 4：已收客 5：仅看我收客的团 6：可用银行优惠 7：可用优惠）")
    private List<Integer> typeList;

    @ApiModelProperty(value = "类型（1：自营 2：代理商）")
    private Integer type;
    
    @ApiModelProperty("价格起")
    private BigDecimal priceBegin;
    
    @ApiModelProperty("价格止")
    private BigDecimal priceEnd;


    @NotNull(message = "菜单id不能为空")
    @ApiModelProperty(value = "菜单id")
    private Long menuId;

    @JsonIgnore
    @ApiModelProperty(value = "用户id列表")
    private List<Long> userList;

    @JsonIgnore
    @ApiModelProperty(value = "团期id列表")
    private List<Long> scheduleIdList;
    
    @ApiModelProperty(value = "状态", hidden = true)
    private List<Integer> scheduleStatusList;
    
    @ApiModelProperty(value = "线下自营权限ID列表，只查询有自营渠道", hidden = true)
    private List<Long> offlineSelfCustomPermissionIdList = new ArrayList<>();

    @ApiModelProperty(value = "是否只查询有代理渠道", hidden = true)
    private boolean isQueryAgent = false;
    
    @ApiModelProperty(value = "负责人ID列表", hidden = true)
    private List<Long> chargePersonIdList;
}
